using System.Collections;
using System.Collections.Generic;
using UnityEngine;

/// <summary>
/// HLLib
/// </summary>
namespace HLLib 
{
    /// <summary>
    /// Ambient Light && Scene Directional Light && Charactor Light.
    /// HLBigWorldLightInfo
    /// </summary>
    public class HLBigWorldLightInfo
    {
        /// <summary>
        /// HLBigWorldLightInfo
        /// </summary>
        public HLBigWorldLightInfo()
        {

        }


        /// <summary>
        /// ~HLBigWorldLightInfo
        /// </summary>
        ~HLBigWorldLightInfo()
        {

        }


        #region ----------------------- Enable SkyBox Light ----------------------------
        /// <summary>
        /// EnableSkyBoxLight
        /// </summary>
        public bool EnableSkyBoxLight;

        /// <summary>
        /// SkyColor_R
        /// </summary>
        public double SkyColor_R;

        /// <summary>
        /// SkyColor_G
        /// </summary>
        public double SkyColor_G;

        /// <summary>
        /// SkyColor_B
        /// </summary>
        public double SkyColor_B;

        /// <summary>
        /// SkyColor_A
        /// </summary>
        public double SkyColor_A;

        /// <summary>
        /// EquatorColor_R
        /// </summary>
        public double EquatorColor_R;

        /// <summary>
        /// EquatorColor_G
        /// </summary>
        public double EquatorColor_G;

        /// <summary>
        /// EquatorColor_B
        /// </summary>
        public double EquatorColor_B;

        /// <summary>
        /// EquatorColor_A
        /// </summary>
        public double EquatorColor_A;

        /// <summary>
        /// GroundColor_R
        /// </summary>
        public double GroundColor_R;

        /// <summary>
        /// GroundColor_G
        /// </summary>
        public double GroundColor_G;

        /// <summary>
        /// GroundColor_B
        /// </summary>
        public double GroundColor_B;

        /// <summary>
        /// GroundColor_A
        /// </summary>
        public double GroundColor_A;

        #endregion

        #region ---------------------------- Scene Directional Light ----------------------------
        /// <summary>
        /// Light_Direction_X
        /// </summary>
        public double Light_Direction_X;

        /// <summary>
        /// Light_Direction_Y
        /// </summary>
        public double Light_Direction_Y;

        /// <summary>
        /// Light_Direction_Z
        /// </summary>
        public double Light_Direction_Z;

        /// <summary>
        /// Light_Intensity
        /// </summary>
        public double Light_Intensity;

        /// <summary>
        /// LightColor_R
        /// </summary>
        public double LightColor_R;

        /// <summary>
        /// LightColor_G
        /// </summary>
        public double LightColor_G;

        /// <summary>
        /// LightColor_B
        /// </summary>
        public double LightColor_B;

        /// <summary>
        /// LightColor_A
        /// </summary>
        public double LightColor_A;

        /// <summary>
        /// Light_Shadow_Intensity
        /// </summary>
        public double Light_Shadow_Intensity;

        /// <summary>
        /// Bake_Static_Shadow_SST
        /// </summary>
        public bool Bake_Static_Shadow_SST;

        #endregion

        #region ------------------------- Charactor Light -----------------------------
        /// <summary>
        /// Charactor_Custom_Ambient_Light
        /// </summary>
        public bool Charactor_Custom_Ambient_Light;

        #endregion
    }


    /// <summary>
    /// Bake GI and realtime light.
    /// HLBigWorldLightPanelData
    /// </summary>
    public class HLBigWorldLightPanelData
    {
        /// <summary>
        /// HLBigWorldLight
        /// </summary>
        public HLBigWorldLightPanelData()
        {
            // list_hlbigworld_info:
            list_hlbigworld_lightinfo = new List<HLBigWorldLightInfo>();
        }


        /// <summary>
        /// ~HLBigWorldLight
        /// </summary>
        ~HLBigWorldLightPanelData()
        {
            ClearHLBigWorldLight();
            Debug.Log("Destory HLBigWorldLightData Sucess.");
        }


        /// <summary>
        /// ClearHLBigWorldLight
        /// </summary>
        public void ClearHLBigWorldLight()
        {
            // list_hlbigworld_info:
            if (null != list_hlbigworld_lightinfo)
            {
                for (int i = list_hlbigworld_lightinfo.Count; --i >= 0;)
                {
                    list_hlbigworld_lightinfo[i] = null;
                    list_hlbigworld_lightinfo.RemoveAt(i);
                }

                list_hlbigworld_lightinfo.Clear();
                list_hlbigworld_lightinfo = null;
            }
        }

        /// <summary>
        /// List<HLBigWorldLightInfo>
        /// </summary>
        public List<HLBigWorldLightInfo> list_hlbigworld_lightinfo;

        /// <summary>
        /// SceneName
        /// </summary>
        public string SceneName;

        /// <summary>
        /// LightNum
        /// </summary>
        public int LightNum;
    }
}

